AndroidStudio安装

问题:

在安装完成第一次打开时,报出了如下错误

'tools.jar'seemstobenotinAndroidStudioclasspath.

PleaseensureJAVA_HOMEpointstoJDKratherthanJRE.

解决办法:

将$JAVA_HOME\/lib中的tools.jar文件复制到AndroidStudio的lib目录下,即可正常运行。

Test3Components

问题:

1. 如何让几个组件占满一行,并且按照比例分配

2. 如何正确的使用对齐这个属性

3. 对于TableLayout,如何让只有两列的内容第二列自动填充

4. 创建的组件中字母全部大写

解决办法

1. 对于几个组件共同占满一行,要用的首先是LinearLayout,设置为水平,然后在里面添加小的组件,并为每个组件设置“android:layout_weight”属性。

  • 关于layout_weight:这个属性设置的是当前组件在当前布局中所占的比重,如果是水平布局,那么就是width的比重,如果是垂直布局,那控制的就是height的比重;当一行组件中全部设置为1时,那么就会等分;当一个为1,另一个不设置的时候,没有设置为1的组件宽度(假设为水平布局)会是wrap_content,剩下的部分会被设置为1的组件填满

2. 对齐在android的布局中有两个,一个是layout_gravity属性,一个是gravity属性,都是对齐,但是还是有区别的

  • layout_gravity:这个对齐,是组件在父组件中的对齐方式

  • gravity:这个对齐方式是组件中子组件的对齐方式

3. 在这里可以用到stretchColumns属性,这个属性意思为设置表格可伸展,值为1的话,那么第二列就会自动伸展开,占满余下的位置

4. 这是Android默认的设置,如果需要更改,则需要手动设置textAllCaps="false",这样,就解决了字母全部大写的问题

Test6Menu

问题:

  1. 菜单点击两次模拟器会崩溃,并报出如下错误

解决办法

这个问题可能时模拟器自身的问题,在网上也并查阅到相关的资料,就先忽略掉了

理解

菜单分为三种,选项菜单、上下文菜单、弹出菜单

* 选项菜单:这个菜单可以自己写,也可以在创建的时候选择basicActivity(这个会自动生成选项菜单),只需要在生成的基础上去做修改即可,可以到xml文件中修改菜单项,对菜单事件的修改,要到MainActivity中做修改,方法名字都已经写好了,只需要判断点击了哪个做出相应的响应即可。

  • 上下文菜单:上下文菜单需要自己写布局文件,和选项菜单类似,需要自己做的事情就是为组件注册上下文菜单,之后重写和上下文菜单相关的两个方法即可。

  • 弹出菜单:弹出菜单也是需要自己写布局文件,然后为需要弹出菜单的组件添加onClick属性,指定方法名,然后在Activity中写方法,并重写点击的方法即可,也是较为容易。

Test7Dialog

问题

  1. 在弹出自定义对话框时,找不到对应的组件

解决过程

  1. 仔细分析了程序的流程,最开始发现的问题是因为自定义对话框是额外加载进来的布局问价,对于这个布局文件上组件,要先加载,才能获取到组件,于是做了如下处理

在这样处理过后,发现仍然不能获取到组件,上网查阅,也没有找到什么合适的解决办法,但是网上存在别人的代码,参考过别人的代码,我发现了区别,就是setView这个方法,我的写法是直接加载布局生成的view,而别人的代码是在setView方法前就先创建这个view,在获取组件的时候,用view.findViewById,我尝试修改代码,果然这样就成功了

但是并不明白原理,于是又做了一些测试,我创建了view,但是在setView里面我写的是直接解析得到的view,获取组件用的是创建view去获取,并打印,发现打印出来的数据为空,这就说明了虽然两个view都是解析过来的view,但是并不是同一个view!

重点

注意View的解析,和view的设置

Test14Avtivity的隐式启动

问题

1、在AndroidManifest配置了activity的action属性,但是依然不能启动第二个Activity

解决

经过测试发现,如果单纯的在intent-filter中配置了action属性,而不写category属性,那么是无法启动Activity的,而且会导致程序直接崩溃退出,于是上网查找原因,在一篇博客中看到这样一段话

要匹配任何一组intent-filter,就要同时匹配action类别,category类别,data类别,才算是完全匹配;

另外再使用隐式调用要求IntentFilter必须定义action和category,data可以没有;其中

categoryandroid:name=”android.intent.category.DEFAULT”是一定要设置的。因为启动的时候Intent会默认加上这个category,否则的话无法启动

Test15intent启动电话

问题

1、调用了intent的setData方法,但是并没有直接到拨打电话的界面,而是要做出选择

解决和分析

这里的问题是没有设置Intent.ACTION_DIAL参数,在Intent创建的时候,参数要写进去,这样就可以直接跳转到拨打电话的界面。如果不写这个参数,那么会弹出选项,供我们选择,样子如下

这里有三个选项,第一个是联系人,如果存在该联系人,则会弹出如下界面

第二个选项跳转的是通话记录,第三个选项才是拨打电话。

除了可以拨打电话以外,intent还可以为我们直接打开浏览器,我们需要做的也非常简单,就是在setData方法中输入Uri.parse("http://网址")即可,这样,当点击按钮触发事件的时候,就会直接跳转到浏览器界面,而且应该是我们输入的网址。

results matching ""

    No results matching ""